$(function() {
	init();
});
//页面初始化调用方法
function init() {
	// 1.初始化Table
	var attributeTable = new TableInit();
	attributeTable.Init();
}

var TableInit = function() {
	var oTableInit = new Object();
	// 初始化Table
	oTableInit.Init = function() {
		$("#attributeTables").bootstrapTable({
			url : '../../../caseElement/queryElementAttributeList', // 请求后台的URL（*）
			method : "POST",
			contentType : "application/x-www-form-urlencoded",
			toolbar : '#toolbar',
			striped : true, // 是否显示行间隔色
			cache : false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
			pagination : true, // 是否显示分页（*）
			sortable : true, // 是否启用排序
			checkboxHeader : false,// 是否显示表头的全选
			queryParamsType : "undefined", // 默认limit
			queryParams : oTableInit.queryParams,// 传递参数（*）
			sidePagination : "server", // 分页方式：client客户端分页，server服务端分页（*）
			pageNumber : 1, // 初始化加载第一页，默认第一页
			pageSize : 10, // 每页的记录行数（*）
			pageList : [ 10, 25, 50, 100 ], // 可供选择的每页的行数（*）
			sortName : "CODE",
			sortOrder : "",
			search : false, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
			strictSearch : true,
			showColumns : true, // 是否显示所有的列
			minimumCountColumns : 2, // 最少允许的列数
			clickToSelect : true, // 是否启用点击选中行
			height : 550, // 行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
			uniqueId : "ID", // 每一行的唯一标识，一般为主键列
			showToggle : true, // 是否显示详细视图和列表视图的切换按钮
			cardView : false, // 是否显示详细视图
			detailView : false,
			singleSelect:true,
			onLoadSuccess:function(){
	            $('.bootstrap-table tr td').each(function () {
	                $(this).attr("title", $(this).text());
	                $(this).css("cursor", 'pointer');
	                
	            });
	        } ,
			responseHandler : function(res) {
				return getTableData(res);
			}, // 是否显示父子表
			columns : [ {
				checkbox : true,
				width: 20
			}, {
				field : 'ID',
				visible : false
			}, {
				field : 'name',
				title : '属性名称',
				width: 80
			}, {
				field : 'code',
				title : '属性编号',
                sortable: true,//是否可排序
				width: 80
			}, {
				field : 'value',
				title : '默认值',
				width: 50
			}, {
				field : 'range',
				title : '属性范围',
				width: 50,
				cellStyle:{ 
 					css:{ 
 						"overflow": "hidden", 
 						"text-overflow": "ellipsis", 
 						"white-space": "nowrap" 
 						} 
 						}
			}, {
				field : 'unit',
				title : '属性单位',
				width: 50
			}, {
				field : 'type',
				title : '显示类型',
				width: 50,
				formatter:typeFormatter
			}, {
				field : 'paramType',
				title : '参数类型',
				width: 50,
				formatter:paramTypeFormatter
			}, {
				field : 'dict',
				title : '字典值',
				width: 50,
				cellStyle:{ 
 					css:{ 
 						"overflow": "hidden", 
 						"text-overflow": "ellipsis", 
 						"white-space": "nowrap" 
 						} 
 						}
			} ,{
				field : 'required',
				title : '内部属性',
				width: 80,
				formatter:requiredFormatter
			}, {
				field : 'createUser',
				title : '创建人',
				width: 50
			}, {
				field : 'createTime',
				title : '创建时间',
				width: 150
			}, {
				field : 'updateUser',
				title : '最后修改人',
				width: 60
			}, {
				field : 'updateTime',
				title : '最后修改时间',
				width: 150
			}]
		});
	};
	// 得到查询的参数
	oTableInit.queryParams = function(params) {
		var temp = { // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的pageSize,
			pageSize : params.pageSize, // 页面大小
			pageNumber : params.pageNumber, // 页码
			sortName : params.sortName,
			sortOrder : params.sortOrder,
			name : $("#seachName").val().trim(),
			code : $("#seachCode").val().trim()
		};
		return temp;
	};
	return oTableInit;
};

var ButtonInit = function() {
	var oInit = new Object();
	oInit.Init = function() {};
	return oInit;
};
function requiredFormatter(value, row, index) {
	if (row['required'] == "1") {
		return "外部参数";
	} else {
		return "内部参数";
	}
}
function paramTypeFormatter(value, row, index) {
	if (row['paramType'] == "1") {
		return "数值型";
	} else if (row['paramType'] == "2"){
		return "Boolean类型";
	}else if (row['paramType'] == "3"){
		return "字符型";
	}else if (row['paramType'] == "4"){
		return "数组型";
	}else{
		return "未知类型";
	}
}
function typeFormatter(value, row, index) {
	if (row['type'] == "1") {
		return "数值型";
	} else if (row['type'] == "2"){
		return "文本输入";
	}else if (row['type'] == "3"){
		return "下拉单选";
	}else if (row['type'] == "4"){
		return "下拉多选";
	}else if (row['type'] == "5"){
		return "时间控件";
	}else if (row['type'] == "6"){
		return "动态下拉单选";
	}else{
		return "未知类型";
	}
}

function add() {
	BootstrapDialog.show({
		title : '新增属性信息',
		draggable: true,
		closable: false,
		message : $("<form class='form-inline' style='height:380px'></form>")
				.load('attributeAdd.html'),
		onshown : function() {
			// 初始化新增页面组织机构的值
		},
		buttons : [ {
			icon : 'glyphicon glyphicon-check',
			label : '确定',
			cssClass : 'btn-primary',
			autospin : true,
			action : function(dialogRef) {
				var name = $("#name").val().trim();
				var code = $("#code").val().trim();
				var defaulteValue = $("#defaulteValue").val().trim();
				var range = $("#range").val().trim();
				var unit = $("#unit").val().trim();
				var type = $("#type").val().trim();
				var paramType = $("#paramType").val().trim();
				var dict = $("#dict").val().trim();
				var required = $("#required").val().trim();
				//添加必填项的校验
				if(name==""){
					$("#name").focus();
					return;
				}
				if(code==""){
					$("#code").focus();
					return;
				}
				if(defaulteValue==""){
					$("#defaulteValue").focus();
					return;
				}
				var obj = {
						name : name,
						code : code,
						value : defaulteValue,
						range : range,
						unit : unit,
						dict : dict,
						required : required,
						type : type,
						paramType:paramType
					};
				$.ajax({
					url : "../../../caseElement/addElementAttribute",
					type : "post",
					data :{elementAttribute:JSON.stringify(obj)},
					dataType : "json",
					success : function(data) {
						if (data.flag == 0) {
							success(data.content);
							queryBytableId('attributeTables');
						} else {
							warning(data.errorInfo);
						}
					},
					error : function() {
						danger("属性信息添加失败!");
					}
				});
			
			}
		}, {
			label : '取消',
			action : function(dialogRef) {
				dialogRef.close();
			}
		} ]
	});
}

function edit() {
	var selectAttributes = $("#attributeTables").bootstrapTable('getSelections');
	if (selectAttributes.length == 0) {
		var content = "请选择要修改的属性信息!";
		info(content);
	} else {
		BootstrapDialog.show({
			title : '修改属性信息',
			draggable: true,
			closable: false,
			message : $("<form class='form-inline' style='height:380px'></form>")
					.load('attributeAdd.html'),
			onshown : function() {
				// 初始化修改页面值
				$("#name").val(selectAttributes[0].name);
				$("#code").val(selectAttributes[0].code);
				$("#defaulteValue").val(selectAttributes[0].value);
				$("#range").val(selectAttributes[0].range);
				$("#unit").val(selectAttributes[0].unit);
				$("#type").val(selectAttributes[0].type);
				$("#paramType").val(selectAttributes[0].paramType);
				$("#dict").val(selectAttributes[0].dict);
				$("#required").val(selectAttributes[0].required);
			},
			buttons : [ {
				icon : 'glyphicon glyphicon-check',
				label : '确定',
				cssClass : 'btn-primary',
				autospin : true,
				action : function(dialogRef) {
					var name = $("#name").val().trim();
					var code = $("#code").val().trim();
					var defaulteValue = $("#defaulteValue").val().trim();
					var range = $("#range").val().trim();
					var unit = $("#unit").val().trim();
					var type = $("#type").val().trim();
					var paramType = $("#paramType").val().trim();
					var dict = $("#dict").val().trim();
					var required = $("#required").val().trim();
					//添加必填项的校验
					if(name==""){
						$("#name").focus();
						return;
					}
					if(code==""){
						$("#code").focus();
						return;
					}
					if(defaulteValue==""){
						$("#defaulteValue").focus();
						return;
					}
					var obj = {id:selectAttributes[0].id,
							name : name,
							code : code,
							value : defaulteValue,
							range : range,
							unit : unit,
							dict : dict,
							required : required,
							type : type,
							paramType:paramType
						};
					$.ajax({
						url : "../../../caseElement/updateElementAttribute",
						type : "post",
						data :{elementAttribute:JSON.stringify(obj)},
						dataType : "json",
						success : function(data) {
							if (data.flag == 0) {
								success(data.content);
								queryBytableId('attributeTables');
							} else {
								warning(data.errorInfo);
							}
						},
						error : function() {
							danger("元素信息添加失败!");
						}
					});
				}
			}, {
				label : '取消',
				action : function(dialogRef) {
					dialogRef.close();
				}
			} ]
		});
	}
}


// 删除属性信息
function deleteAttribute() {
	var selectAttributes = $("#attributeTables").bootstrapTable('getSelections');
	if (selectAttributes.length == 0) {
		var content = "请选择要删除的属性信息!";
		info(content);
	} else {
		var id = selectAttributes[0].id;
		BootstrapDialog.show({
			title : '提示',
			message :"本数据为基础数据十分重要，删除前请备份，您确定要删除吗？",
			buttons : [{
				icon : 'glyphicon glyphicon-check',
				label : '确定',
				cssClass : 'btn-primary',
				autospin : true,
				action:function(dialogRef){
					dialogRef.close();
					$.ajax({
						url : "../../../caseElement/deleteElementAttribute",
						type : "post",
						data : {
							id : id
						},
						dataType : "json",
						success : function(data) {
							if (data.flag == 0) {
								success(data.content);
								queryBytableId('attributeTables');
							} else {
								danger(data.errorInfo);
							}
						},
						error : function() {
							danger("属性信息删除失败!");
						}
					});
				}
			},{
				label : '取消',
				action : function(dialogRef) {
					dialogRef.close();
				}
			}]
		});
	}
}
